Data storage technology over the years has evolved from a direct attached storage model (DAS) to using remote computer storage models, such as Network Attached Storage (NAS) and Storage Area Network (SAN). With the direct storage model, the storage is directly attached to the workstations and applications servers, but this creates numerous difficulties with administration, backup, compliance, and maintenance of the directly stored data. These difficulties are alleviated at least in part by separating the application server/workstations form the storage medium, for example, using a computer storage network.
A typical NAS system includes a number of networked servers (e.g., nodes) for storing client data and/or other resources. The servers may be accessed by client devices (e.g., personal computing devices, workstations, and/or application servers) via a network such as, for example, the Internet. Specifically, each client device may issue data access requests (e.g., corresponding to read and/or write operations) to one or more of the servers through a network of routers and/or switches. Typically, a client device uses an IP-based network protocol, such as Common Internet File System (CIFS) and/or Network File System (NFS), to read from and/or write to the servers in a NAS system.
In the context of NAS, a storage server may be a file server (e.g., a “filer”) which operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices (e.g., magnetic/optical disks or tapes). The mass storage devices may be organized into one or more volumes or aggregates of a Redundant Array of Inexpensive Disks (RAID). In a large scale storage system, it is possible that data may become corrupted or stored incorrectly from time to time. Consequently, RAID schemes include built-in “scrubbing” techniques to detect and, in some cases, to correct corrupted data. However, it may take weeks or even longer to scrub an entire drive. On the other hand, if left uncorrected, data corruption can be propagated to other blocks in a RAID stripe due to subsequent write operations to the same stripe.